package com.triones.api.mapper.interlace;

import com.ruoyi.common.core.mapper.BaseMapperPlus;
import com.triones.api.entity.interlace.dto.InterlaceBalancesDO;
import com.triones.api.entity.interlace.vo.InterlaceBalancesVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.math.BigDecimal;

/**
 * interlace余额
 */
public interface InterlaceBalancesMapper extends BaseMapperPlus<InterlaceBalancesMapper, InterlaceBalancesDO, InterlaceBalancesVO> {

    /**
     * 原子性增加虚拟可用金额
     * @param id 主键ID
     * @param amount 要增加的金额
     * @return 更新记录数
     */
    @Update("UPDATE tr_interlace_balances SET virtual_available = virtual_available + #{amount}, update_time = #{updateTime} " +
        "WHERE id = #{id}")
    int increaseVirtualAvailable(@Param("id") Long id,
                                 @Param("amount") BigDecimal amount,
                                 @Param("updateTime") Long updateTime);

    /**
     * 原子性减少虚拟可用金额
     * @param id 主键ID
     * @param amount 要减少的金额
     * @return 更新记录数
     */
    @Update("UPDATE tr_interlace_balances SET virtual_available = virtual_available - #{amount}, update_time = #{updateTime} " +
        "WHERE id = #{id}")
    int decreaseVirtualAvailable(@Param("id") Long id,@Param("amount") BigDecimal amount, @Param("updateTime") Long updateTime);
}
